/* 学习目标：掌握枚举的种类  */
// 1. 👍数字枚举： 默认从0开始自增
// 2. 👎文字枚举


// 枚举和字面量类型的
// 使用场景相同： 表示一组取值范围
// 数字枚举，👍语义化程度更高
// 字符串做联合，👍使用字面量+联合

// 区别:
// 字面量:可以用任意数据类型，表示取值范围
// 枚举：只能用数字或字符串，表示取值范围
type Xxxx = [] | { name: "zs" }
type MyGender = "男" | "女"


// 数字枚举：默认从0开始自增
enum OrderState {
  DaiFuKuan = 10,
  YiFuKuan,
  DaiFaHuo,
  YiFaHuo
}

function fn(state: OrderState) {
  console.log('state  ----->  ', state);
}

fn(OrderState.DaiFuKuan)
fn(OrderState.YiFuKuan)
fn(OrderState.DaiFaHuo)
fn(OrderState.YiFaHuo)


// 👎文字枚举 - 了解即可
enum Direction {
  // 字符串枚举, 没有自增
  Up = 'xxx',
  Down = 'yyy',
  Left = 'LEFT',
  Right = 'RIGHT'
}


function fn2(d: Direction) {
  console.log('d  ----->  ', d);
}

fn2(Direction.Down)
fn2(Direction.Up)
fn2(Direction.Left)
fn2(Direction.Right)